#include "TrueText/Config.h"
#include "TrueText/Font.h"
#include "TrueText/Face.h"
#include "FontImpl.h"

namespace TrueText {

const float Font::DEFAULT_HEIGHT = 10.0f;

Font::Font(const Face& face)
    : impl(new FontImpl(face.getImpl(), DEFAULT_HEIGHT))
{ }

Font::Font(const Font& rhs)
    : impl(new FontImpl(*rhs.impl))
{ }

const Font& Font::operator=(const Font& rhs)
{
    if (this == &rhs)
        return *this;

    impl.reset(new FontImpl(*rhs.impl));
    return *this;
}

boost::shared_ptr<FontImpl> Font::getImpl() const
{
    return impl;
}

float Font::GetHeight() const
{
    return impl->GetHeight();
}

void Font::SetHeight(float value)
{
    impl->SetHeight(value);
}

const Color& Font::GetColor() const
{
	return impl->GetColor();
}

void Font::SetColor(const Color& value)
{
	impl->SetColor(value);
}

FontEffectOutline& Font::Outline()
{
	return impl->Outline();
}

FontEffectShadow& Font::Shadow()
{
	return impl->Shadow();
}

}